﻿using System;
using System.Collections.Generic;
using Sinacor.Infra.UI.Common;
using Sinacor.UI.Bovespa.Ordens.Communication.Bovespa.Ordens.AjusteMercadoFuturo;

namespace Sinacor.UI.Bovespa.Ordens.Communication.Translator.ModelToDataContract
{
    /// <summary>
    /// Classe estática (static class) de tradução de entidade de negócio para contrato de dados dos métodos da classe AjusteMercadoFuturoCommunication
    /// </summary>
    public static class AjusteMercadoFuturo
    {
        #region Métodos

        /// <summary>
        /// Traduz um FiltroMercadoFuturo para um contrato de dados FiltroAjusteMercadoFuturoRequest
        /// </summary>
        /// <param name="from"></param>
        /// <returns></returns>
        public static FiltroAjusteMercadoFuturoRequest ToFiltroMercadoFuturoRequest(Model.Parameter.FiltroAjusteMercadoFuturo from)
        {
            FiltroAjusteMercadoFuturoRequest to = new FiltroAjusteMercadoFuturoRequest();

            to.CodigoNegociacao = from.CodigoNegociacao;
            to.DataPregao = from.DataPregao;

            return to;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="from"></param>
        /// <returns></returns>
        public static List<FiltroAjusteMercadoFuturoRequest> ToFiltroMercadoFuturoRequest(ModelCollection<Model.Parameter.FiltroAjusteMercadoFuturo> from)
        {
            List<FiltroAjusteMercadoFuturoRequest> to = new List<FiltroAjusteMercadoFuturoRequest>();
            foreach (Model.Parameter.FiltroAjusteMercadoFuturo item in from)
                to.Add(ToFiltroMercadoFuturoRequest(item));

            return to;
        }

        /// <summary>
        /// Traduzir um Model.AjusteMercadoFuturo para um contrato de dados AjusteMercadoFuturoRequest;
        /// </summary>
        /// <param name="from"></param>
        /// <returns></returns>
        public static AjusteMercadoFuturoRequest ToMercadoFuturoRequest(Model.AjusteMercadoFuturo from)
        {
            AjusteMercadoFuturoRequest to = new AjusteMercadoFuturoRequest();

            to.AnoPregao = from.AnoPregao;
            to.CodigoNegociacao = from.CodigoNegociacao;
            to.DataPregao = from.DataPregao;
            to.Fator = from.Fator;
            to.PrecoExercicio = from.PrecoExercicio;
            to.ValorAjusteAnterior = from.ValorAjusteAnterior;
            to.ValorAjusteAtual = from.ValorAjusteAtual;
            to.Variacao = from.Variacao;

            return to;
        }

        /// <summary>
        /// Realizar um looping pelos items, fazer a chamada para o método de tradução ToMercadoFuturoRequest() que recebe apenas um item. 
        /// Traduzir todos os items e retornar a lista.
        /// </summary>
        /// <param name="from"></param>
        /// <returns></returns>
        public static List<AjusteMercadoFuturoRequest> ToMercadoFuturoRequest(ModelCollection<Model.AjusteMercadoFuturo> from)
        {
            List<AjusteMercadoFuturoRequest> response = new List<AjusteMercadoFuturoRequest>();

            foreach (Model.AjusteMercadoFuturo item in from)
                response.Add(ToMercadoFuturoRequest(item));

            return response;
        }

        #endregion
    }
}